package com.study.newjava8.lambda;

import com.study.newjava8.pojo.Employee;
import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

/**
 * 一、Stream的三个操作步骤:
 * 1.创建Stream
 * 2.中间操作
 * 3.终止操作(终端操作)
 */
public class TestStreamAPI1 {
    /**
     * 创建Stream的四种方式
     */
    @Test
    public void test1(){
        //1.可以通过Collection系列集合提供的stream()或parallelStream()
        List<String> list=new ArrayList<>();
        //获取流的第一种方式
        Stream<String> stream1 = list.stream();
        //2.通过Arrays中的静态方法stream()获取数组流
        Employee [] employees=new Employee[10];
        Stream<Employee> stream2 = Arrays.stream(employees);
        //3.通过Stream类的静态方法of()
        Stream<String> stream3 = Stream.of("aaa", "bb");
        //4.创建无限流，通过iterate()和generate()
        //迭代
        Stream<Integer> stream4 = Stream.iterate(0, (x) -> x + 2);
        stream4.limit(10).forEach(System.out::println);

        //生成 产生随机double
        Stream<Double> stream5 = Stream.generate(() -> Math.random());
        stream5.limit(10).forEach(System.out::println);

    }

}
